import api from '../../api';
import { message } from 'antd';
import { forEach } from 'lodash';

export default {
  namespace: 'stockOrderM', //股票指令
  state: {
    positionInfo: {
      0: '--',
      1: '--',
    },
    positionInfo2: '--',
    stockInfor1: {
      code: '--',
      secucode: '--',
      secuabbr: '--',
      comChiname: '--',
      sindunameWind: '--',
    },
    stockInfor2: {
      status: null,
      lastpx: '--',
      highpx: '--',
      lowpx: '--',
      upDownPrices: '--',
      upDownRange: '--',
      totalvolumetrade: '--',
      totalvaluetrade: '--',
      maxpx: '--',
      minpx: '--',
    },
    flag: true,
    status: false,
  },
  effects: {
    //指令下达
    *saveInstruction({ payload }, { call, put, select }) {
      const res = yield call(api.stockOrder.saveInstruction, payload);
      if (res && res.success) {
        message.success('股票指令下达成功!');
      } else {
        message.error(res.errorMsg || '股票指令下达失败!');
      }
      return res;
    },

    *queryFund({ payload }, { call, put }) {
      const response = yield call(api.stockOrder.queryFund, payload);
      if (response && response.success) {
        const data = response.data[0];
        const { toneAvailableFund, tzeroAvailableFund } = data || {};
        yield put({
          type: 'save',
          payload: {
            positionInfo: {
              0: tzeroAvailableFund || 0,
              1: toneAvailableFund || 0,
              // 0: 2000,
              // 1: 1000
            },
          },
        });
        return data;
      } else {
        message.error('查询组合可用资金失败');
      }
    },

    *getPosition({ payload }, { call, put }) {
      const response = yield call(api.stockOrder.getPosition, payload);
      if (response && response.msg) {
        let data = response.data.dataSource.t0 ? response.data.dataSource.t0 : 0;
        yield put({
          type: 'save',
          payload: {
            positionInfo2: data || 0,
            // positionInfo2:1501
          },
        });
      } else {
        message.error('查询可用持仓失败');
      }
    },

    *getStock1({ payload }, { call, put }) {
      const response = yield call(api.stockOrder.getStock1, payload);
      if (response && response.msg) {
        let data = response.data.dataSource;
        yield put({
          type: 'save',
          payload: {
            stockInfor2: {
              status: data.status,
              lastpx: data.lastpx ? Number(data.lastpx) : '--',
              highpx: data.highpx ? Number(data.highpx) : '--',
              lowpx: data.lowpx ? Number(data.lowpx) : '--',
              upDownPrices: data.upDownPrices ? Number(data.upDownPrices) : '--',
              upDownRange: data.upDownRange ? Number(data.upDownRange) : '--',
              totalvolumetrade: data.totalvolumetrade ? Number(data.totalvolumetrade) : '--',
              totalvaluetrade: data.totalvaluetrade ? Number(data.totalvaluetrade) : '--',
              maxpx: data.maxpx ? Number(data.maxpx) : '--',
              minpx: data.minpx ? Number(data.minpx) : '--',
            },
            flag: false,
          },
        });
        return data.status;
      } else {
        message.error('查询股票信息失败');
      }
    },

    *getStock2({ payload }, { call, put }) {
      const response = yield call(api.stockOrder.getStock2, payload);
      if (response && response.msg) {
        let data = response.data.dataSource;
        yield put({
          type: 'save',
          payload: {
            stockInfor1: {
              code: data.code ? data.code : '--',
              secucode: data.secucode ? data.secucode : '--',
              secuabbr: data.secuabbr ? data.secuabbr : '--',
              comChiname: data.comChiname ? data.comChiname : '--',
              sindunameWind: data.sindunameWind ? data.sindunameWind : '--',
            },
            flag: false,
          },
        });
      } else {
        message.error('查询股票信息失败');
      }
    },
  },

  reducers: {
    save(state, { payload }) {
      return { ...state, ...payload };
    },
  },
};
